package fr.demos.cinepantin.controleur;

import java.io.IOException;

import javax.inject.Inject;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import com.sun.xml.rpc.processor.modeler.j2ee.xml.string;

import fr.demos.cinepantin.Article;
import fr.demos.cinepantin.LignePanier;
import fr.demos.cinepantin.Livre;
import fr.demos.cinepantin.Panier;
import fr.demos.cinepantin.dao.DaoArticle;
import fr.demos.cinepantin.dao.DaoFilm;
import fr.demos.cinepantin.dao.DaoLivre;
import fr.demos.cinepantin.dao.interfac.ArticleDao;
import fr.demos.cinepantin.dao.interfac.FilmDao;
import fr.demos.cinepantin.dao.interfac.LivreDao;
import fr.demos.cinepantin.exception.DaoExceptions;
import fr.demos.cinepantin.exception.StockException;

/**
 * @author CQP-DNT
 * Servlet implementation class AfficherPanier
 * Afficher les contenu de panier, commandé par un client incrementer et decrementer la quantité de l'article
 */
@WebServlet("/AfficherPanier")
public class AfficherPanier extends HttpServlet {
	private static final long serialVersionUID = 1L;
	
	@Inject
	@DaoArticle
	private ArticleDao articledao ;

	@Inject
	@DaoLivre
	private LivreDao livredao ;

	@Inject
	@DaoFilm
	private FilmDao dvddao;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public AfficherPanier() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	
	HttpSession session = request.getSession();	
	Integer idArticle = null;
	try{
		idArticle=Integer.parseInt(request.getParameter("id"));
		
	}catch(NumberFormatException nfe){
		
		request.setAttribute("page","afficherPanier.jsp");
		request.getRequestDispatcher("page.jsp").forward(request, response);
		
	}
	// recupere le panier en session
	Panier panier =(Panier)session.getAttribute("panierSession");
	String action = request.getParameter("Action");
	
	try {
		
		Article articleAjouter = articledao.getArticleParId(idArticle);
		// dans le cas de l'incrementer et decrementer un article
		if(action== null || action.equals("incrementer")){
				
				panier.ajouter(articleAjouter, 1);
				request.setAttribute("articleAjouter",articleAjouter);
				
			} else if(action.equals("decrementer")){
				panier.enleverArticle(articleAjouter, 1);

				// dans le cas de supprimer un article du panier
			} else if(action.equals("supprimerArticlePanier")){
				panier.retirer(articleAjouter);

			}
		articledao.modifierArticle(articleAjouter);
		session.setAttribute("panierSession", panier);
 
			
	} catch (DaoExceptions | StockException e) {
		e.printStackTrace();
		request.setAttribute("erreurPage", "Erreur panier, Vous n'avez plus de stock de cet article !!");
	}

	request.setAttribute("PrixTTCPanier", panier.getMontantTotal());
	request.setAttribute("page","afficherPanier.jsp");
	request.getRequestDispatcher("page.jsp").forward(request, response);
	
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request,response);
  	
	}
}


    	


	

